CSAPP Linking 笔记
符号和符号表
static属性声明的全局变量/函数都是模块私有的,任意不被static修饰的全局变量/函数都是公共的,可以被其他模块访问
因此,在每个可重定位目标模块中存在三类符号
- 自己定义的全局符号
- 由其他模块定义并由该模块引用的全局符号
- 自己定义的局部符号–static修饰的函数/全局变量
符号解析
编译器解析符号引用的办法是将每个与它输入的可重定位目标文件中的一个确定的符号定义关联起来
如何解析多重定义的全局符号
区别强弱定义: (我的理解) 强定义是全局定义后有初始值,弱定义没有
- 不允许有多个同名的强符号
- 如果有一个强符号和多个弱符号同名,则选择强符号
- 如果多个弱符号同名,则随机选择一个
CSAPP Linking 笔记